From 4bb359f06796cfd93374b2ed6d2c7d07ff86749c Mon Sep 17 00:00:00 2001 From: Alexander Harkness Date: Sat, 10 Jul 2021 21:58:33 +0100 Subject: Update build script names to be more intuitive. See: https://github.com/cuberite/cuberite/commit/e77a4ab46deb63655037132ee4af7b9612890ee0 --- Jenkinsfile | 14 ++++----- cibuild.sh | 71 ++++++++++++++++++++++++++++++++++++++++++++++ jenkinsbuild.sh | 88 --------------------------------------------------------- nightlybuild.sh | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ travisbuild.sh | 71 ---------------------------------------------- 5 files changed, 166 insertions(+), 166 deletions(-) create mode 100755 cibuild.sh delete mode 100755 jenkinsbuild.sh create mode 100755 nightlybuild.sh delete mode 100755 travisbuild.sh diff --git a/Jenkinsfile b/Jenkinsfile index 5e3097833..2d43215fc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -21,7 +21,7 @@ pipeline { } stage("clang-tidy") { steps { - sh './clang-tidy.sh -j 3' + sh './clang-tidy.sh -j 4' } } } @@ -30,24 +30,24 @@ pipeline { parallel { stage("gcc") { environment { - TRAVIS_CUBERITE_BUILD_TYPE = 'Release' - TRAVIS_JOB_NUMBER = "{$env.BUILD_ID}" + CI_CUBERITE_BUILD_TYPE = 'Release' + CI_JOB_NUMBER = "{$env.BUILD_ID}" CC = "gcc" CXX = "g++" } steps { - sh 'bash ./travisbuild.sh' + sh 'bash ./cibuild.sh' } } stage("clang") { environment { - TRAVIS_CUBERITE_BUILD_TYPE = 'Debug' - TRAVIS_JOB_NUMBER = "{$env.BUILD_ID}" + CI_CUBERITE_BUILD_TYPE = 'Debug' + CI_JOB_NUMBER = "{$env.BUILD_ID}" CC = "clang" CXX = "clang++" } steps { - sh 'bash ./travisbuild.sh' + sh 'bash ./cibuild.sh' } } } diff --git a/cibuild.sh b/cibuild.sh new file mode 100755 index 000000000..cd30cda0a --- /dev/null +++ b/cibuild.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +set -e + +export CUBERITE_BUILD_SERIES_NAME="CI $CC $CI_CUBERITE_BUILD_TYPE" +export CUBERITE_BUILD_ID=$CI_JOB_NUMBER +export CUBERITE_BUILD_DATETIME=`date` + +# Use ccache if available +if [ `which ccache` ]; then + # Re-run compile on pre-processed sources on cache miss + # "It's slower actually, but clang builds fail without it." + export CCACHE_CPP2=true + + # Tell CMake of ccache's existence + CACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache" + + echo "Using ccache installed at $(which ccache)" + ccache --max-size=1G + ccache --zero-stats +fi + +workdir="$CC"_"$CI_CUBERITE_BUILD_TYPE" +mkdir "$workdir" +cd "$workdir" + +# Work around a Clang + ccache issue with failing builds by disabling +# precompiled headers. Turn off LTO for faster build speeds +cmake .. -DCMAKE_BUILD_TYPE=${CI_CUBERITE_BUILD_TYPE} \ + -DBUILD_TOOLS=Yes \ + -DPRECOMPILE_HEADERS=No \ + -DSELF_TEST=Yes \ + -DUNITY_BUILDS=${CI_CUBERITE_UNITY_BUILDS-Yes} \ + -DWHOLE_PROGRAM_OPTIMISATION=No \ + ${CACHE_ARGS}; + +echo "Building..." +cmake --build . --parallel 3; + +if [ `which ccache` ]; then + echo "Built with ccache, outputting cache stats..." + ccache --show-stats +fi + +echo "Testing..." +ctest --output-on-failure --parallel 2; + +cd Server/; +touch apiCheckFailed.flag +if [ "$CI_CUBERITE_BUILD_TYPE" != "COVERAGE" ]; then + ./Cuberite <<- EOF + load APIDump + apicheck + restart + stop + EOF + if [ -f ./NewlyUndocumented.lua ]; then + echo "ERROR: Newly undocumented API symbols found:" + cat ./NewlyUndocumented.lua + exit 1 + fi + if [ -f ./DuplicateDocs.txt ]; then + echo "ERROR: API documentation has duplicate symbol warnings:" + cat ./DuplicateDocs.txt + exit 1 + fi + if [ -f ./apiCheckFailed.flag ]; then + echo "ERROR: API check has failed with an unknown error" + exit 1 + fi +fi diff --git a/jenkinsbuild.sh b/jenkinsbuild.sh deleted file mode 100755 index 2ba8f4976..000000000 --- a/jenkinsbuild.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -# Parse arguments. -while [[ $# -gt 1 ]] -do -key="$1" -case $key in - -s|--server-name) - SERVERNAME="$2" - shift - ;; - -t|--target) - TARGET="$2" - shift - ;; - -c|--compiler) - CCOMP="$2" - shift - ;; - -cxx|--cxx-compiler) - CXXCOMP="$2" - shift - ;; - -m|--compile-mode) - COMPILEMODE="-DCMAKE_BUILD_TYPE=$2" - shift - ;; - -n|--build-number) - BUILDID="$2" - shift - ;; - -p|--toolchain-file) - TOOLCHAINFILE="-DCMAKE_TOOLCHAIN_FILE=$2" - shift - ;; - -b|--branch) - BRANCH="$2" - shift - ;; - -32|--force-32) - FORCE32="-DFORCE_32=$2" - shift - ;; - *) - ;; -esac -shift -done - -git submodule update --init - -# Set up build information. -export CUBERITE_BUILD_SERIES_NAME="$SERVERNAME $TARGET $COMPILEMODE ($BRANCH)" -export CUBERITE_BUILD_ID="$BUILDID" -export CUBERITE_BUILD_DATETIME="`date`" - -if [ -x "$(command -v ccache)" ] -then - export CCACHE_CPP2=true - CACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache" -fi - -# Build -CXX=$CXXCOMP CC=$CCOMP cmake . -DNO_NATIVE_OPTIMIZATION=1 ${CACHE_ARGS} ${TOOLCHAINFILE} ${COMPILEMODE} ${FORCE32} -make -j 4 - - -# Package Server -echo Cuberite "$CUBERITE_BUILD_SERIES_NAME-$CUBERITE_BUILD_ID\n$BUILD_URL" > Server/buildinfo.txt - -# h: dereference (archive file/folder instead of symlink) -# z: gzip (compress) -# c: create -# v: verbose -# T: files-from (list of server files accepted for release archives) -# f: file (output file location) -pushd Server -tar -hzcv --exclude .git -T Install/UnixExecutables.list -f ../Cuberite.tar.gz -popd -sha1sum Cuberite.tar.gz > Cuberite.tar.gz.sha1 - -# Package ProtoProxy -# This tool is very out of date, uncomment when it's being worked on again -# pushd Tools/ProtoProxy -# sha1sum ProtoProxy > ProtoProxy.sha1 -# popd diff --git a/nightlybuild.sh b/nightlybuild.sh new file mode 100755 index 000000000..2ba8f4976 --- /dev/null +++ b/nightlybuild.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +set -ex + +# Parse arguments. +while [[ $# -gt 1 ]] +do +key="$1" +case $key in + -s|--server-name) + SERVERNAME="$2" + shift + ;; + -t|--target) + TARGET="$2" + shift + ;; + -c|--compiler) + CCOMP="$2" + shift + ;; + -cxx|--cxx-compiler) + CXXCOMP="$2" + shift + ;; + -m|--compile-mode) + COMPILEMODE="-DCMAKE_BUILD_TYPE=$2" + shift + ;; + -n|--build-number) + BUILDID="$2" + shift + ;; + -p|--toolchain-file) + TOOLCHAINFILE="-DCMAKE_TOOLCHAIN_FILE=$2" + shift + ;; + -b|--branch) + BRANCH="$2" + shift + ;; + -32|--force-32) + FORCE32="-DFORCE_32=$2" + shift + ;; + *) + ;; +esac +shift +done + +git submodule update --init + +# Set up build information. +export CUBERITE_BUILD_SERIES_NAME="$SERVERNAME $TARGET $COMPILEMODE ($BRANCH)" +export CUBERITE_BUILD_ID="$BUILDID" +export CUBERITE_BUILD_DATETIME="`date`" + +if [ -x "$(command -v ccache)" ] +then + export CCACHE_CPP2=true + CACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache" +fi + +# Build +CXX=$CXXCOMP CC=$CCOMP cmake . -DNO_NATIVE_OPTIMIZATION=1 ${CACHE_ARGS} ${TOOLCHAINFILE} ${COMPILEMODE} ${FORCE32} +make -j 4 + + +# Package Server +echo Cuberite "$CUBERITE_BUILD_SERIES_NAME-$CUBERITE_BUILD_ID\n$BUILD_URL" > Server/buildinfo.txt + +# h: dereference (archive file/folder instead of symlink) +# z: gzip (compress) +# c: create +# v: verbose +# T: files-from (list of server files accepted for release archives) +# f: file (output file location) +pushd Server +tar -hzcv --exclude .git -T Install/UnixExecutables.list -f ../Cuberite.tar.gz +popd +sha1sum Cuberite.tar.gz > Cuberite.tar.gz.sha1 + +# Package ProtoProxy +# This tool is very out of date, uncomment when it's being worked on again +# pushd Tools/ProtoProxy +# sha1sum ProtoProxy > ProtoProxy.sha1 +# popd diff --git a/travisbuild.sh b/travisbuild.sh deleted file mode 100755 index 712f4e2c4..000000000 --- a/travisbuild.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env bash - -set -e - -export CUBERITE_BUILD_SERIES_NAME="Travis $CC $TRAVIS_CUBERITE_BUILD_TYPE" -export CUBERITE_BUILD_ID=$TRAVIS_JOB_NUMBER -export CUBERITE_BUILD_DATETIME=`date` - -# Use ccache if available -if [ `which ccache` ]; then - # Re-run compile on pre-processed sources on cache miss - # "It's slower actually, but clang builds fail without it." - export CCACHE_CPP2=true - - # Tell CMake of ccache's existence - CACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache" - - echo "Using ccache installed at $(which ccache)" - ccache --max-size=1G - ccache --zero-stats -fi - -workdir="$CC"_"$TRAVIS_CUBERITE_BUILD_TYPE" -mkdir "$workdir" -cd "$workdir" - -# Work around a Clang + ccache issue with failing builds by disabling -# precompiled headers. Turn off LTO for faster build speeds -cmake .. -DCMAKE_BUILD_TYPE=${TRAVIS_CUBERITE_BUILD_TYPE} \ - -DBUILD_TOOLS=Yes \ - -DPRECOMPILE_HEADERS=No \ - -DSELF_TEST=Yes \ - -DUNITY_BUILDS=${TRAVIS_CUBERITE_UNITY_BUILDS-Yes} \ - -DWHOLE_PROGRAM_OPTIMISATION=No \ - ${CACHE_ARGS}; - -echo "Building..." -cmake --build . --parallel 3; - -if [ `which ccache` ]; then - echo "Built with ccache, outputting cache stats..." - ccache --show-stats -fi - -echo "Testing..." -ctest --output-on-failure --parallel 2; - -cd Server/; -touch apiCheckFailed.flag -if [ "$TRAVIS_CUBERITE_BUILD_TYPE" != "COVERAGE" ]; then - ./Cuberite <<- EOF - load APIDump - apicheck - restart - stop - EOF - if [ -f ./NewlyUndocumented.lua ]; then - echo "ERROR: Newly undocumented API symbols found:" - cat ./NewlyUndocumented.lua - exit 1 - fi - if [ -f ./DuplicateDocs.txt ]; then - echo "ERROR: API documentation has duplicate symbol warnings:" - cat ./DuplicateDocs.txt - exit 1 - fi - if [ -f ./apiCheckFailed.flag ]; then - echo "ERROR: API check has failed with an unknown error" - exit 1 - fi -fi -- cgit v1.2.3